/**
 * Projet de LIF12 : messagerie instantanée.
 * Librairie de sockets multiplateformes.
 *
 * @file sockets/sockets.h
 * @author Elsa FLECHON elsa.flechon@etu.univ-lyon1.fr
 * @author Emmanuel GAUDE emmanuel.gaude@etu.univ-lyon1.fr
 * @author Grégoire LEMASSON gregoire.lemasson@etu.univ-lyon1.fr
 * @since 2009/03/11
 * @version 2009/03/11
 */

#ifndef SOCKETS_H_INCLUDED
#define SOCKETS_H_INCLUDED

/* - Inclusion des en-têtes ------------------------------------------------- */
/* -- Inclusion des en-têtes standards. ------------------------------------- */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
/* -- Inclusion des en-têtes POSIX. ----------------------------------------- */
#if defined (WIN32)
	#include <winsock2.h>
/* -- Inclusion des en-têtes WIN32. ----------------------------------------- */
#elif defined (linux)
	#include <sys/types.h>
	#include <sys/socket.h>
	#include <netinet/in.h>
	#include <arpa/inet.h>
	#include <netdb.h>
#endif

/* - Définition des types --------------------------------------------------- */
typedef int SOCKET; /**< Descripteur d'une socket. */
typedef struct sockaddr_in SOCKADDR_IN; /**< Adresse d'une socket IPv4. */
typedef struct sockaddr SOCKADDR; /**< Descripteur d'une socket. */

/* - Définition des constantes ---------------------------------------------- */
#define INVALID_SOCKET -1
#define SOCKET_ERROR -1

/* - Définition des variables globales -------------------------------------- */
int sock_err; /**< Stocke les erreurs. */

/* - Déclaration des fonctions ---------------------------------------------- */
void sockets_init();


#endif /* SOCKETS_H_INCLUDED */
